/**

 @Name：layuiAdmin 用户管理 管理员管理 角色管理
 @Author：star1029
 @Site：http://www.layui.com/admin/
 @License：LPPL
    
 */


layui.define(['table','form','transfer','tree','util'], function(exports){
  var $ = layui.$
  ,admin = layui.admin
  ,view = layui.view
  ,table = layui.table
  ,transfer = layui.transfer
  ,tree = layui.tree
  ,util = layui.util
  ,form = layui.form;
  table.render({
    elem: '#LAY-user-manage'
    ,url: '/users/findAll' //模拟接口'
    ,method:'post' //如果无需自定义HTTP类型，可不加该参数
    ,contentType:'application/json'
    ,cols: [[
      {type: 'checkbox', fixed: 'left'}
      ,{field: 'id', title: 'ID',width:80}
      ,{field: 'loginName', title: '用户名',width:80}
      ,{field: 'protectemail', title: '邮箱',width:80}
      ,{field: 'protectmtel', title: '手机号',width:80} 
      ,{field: 'password', title: '密码', minWidth: 100}
      ,  { field: 'islockout',title: '是否锁定',templet: function(d) {
      if (d.islockout == "否") {
      return '<input type="checkbox" param="' + d.id + '" lay-filter="today" name="islockout" lay-skin="switch"  lay-text="是|否">';
        } else {
     return '<input type="checkbox" param="' + d.id + '" lay-filter="today" name="islockout" lay-skin="switch"checked  lay-text="是|否">';
            }
        }
    }
      ,{field: 'createtime', title: '创建时间'}
      ,{field: 'lastlogintime', title: '最后登录时间'}
      ,{field: 'psdwrongtime', title: '秘密错误次数',width:80}
      ,{field: 'locktime', title: '用户锁定时间',width:80}
      ,{title: '操作', width:350, align:'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
    ]]
    ,page: true
    ,limit: 5
    ,limits:[5,10,15,20]
    ,height: 'full-320'
    ,text: '对不起，加载出现异常！'
  });
   //锁定和解锁用户
   form.on('switch(today)', function(data) {
    id = $(data.elem).attr("param"),
        isPutOnSale = data.elem.checked ? "是" : "否"
    console.log(id);
    console.log(isPutOnSale);
    $.ajax({
      url: "/users/" + isPutOnSale + "/" + id,
      type: "post",
      async: false,
      data: {
          id: $(data.elem).attr("param"),
          isPutOnSale: data.elem.checked ? "是" : "否"
      },
      dataType: 'json',
      success: function(data) {
          admin.events.refresh();
      }
  })
})
  table.on('tool(LAY-user-manage)', function(obj){
    var data = obj.data;
    var id;
    if(obj.event === 'del'){
        layer.confirm('真的删除行么', function(index){     
      $.ajax({
        type:"post",
        url:"/users/"+data.id,
        dataType:"json",
        success:function (data) {    
        }
       }); 
      obj.del();
      layer.close(index);
    });  
    } else if(obj.event === 'edit'){
      admin.popup({
        title: '给角色<font color="red">['+ data.loginName +'] </font>修改信息'
        ,area: ['500px', '450px']
        ,id: 'LAY-popup-user-add'
        ,success: function(layero, index){
          view(this.id).render('user/user/userform', data).done(function(){
            form.render(null, 'layuiadmin-form-useradmin');
            form.val('layuiadmin-form-useradmin',data);//进行数据回显
            //监听提交
            form.on('submit(LAY-user-front-submit)', function(data){
              var field = data.field; //获取提交的字段
              $.ajax({
               url:"/users/addOrEdit",
                type:"post",
                async:false,
                data:JSON.stringify(field),//转成json格式
                contentType:"application/json",
                dataType:"json",
                success:function(data){
                  layui.table.reload('LAY-user-manage'); //重载表格
                  layer.close(index); //执行关闭 
                }
        });
      });
    });
  }
});
}else if (obj.event === 'resetting') { 
  layer.confirm('真的重置密码吗？', function(index) {
      $.ajax({
          url: "/users/reset/" + data.id,
          type: "post",
          async: false,
          data: {data: id},
          dataType: 'json',
          success: function(data) {
          admin.events.refresh();
          }
      })
      obj.del();
      layer.close(index);
  });

}
    else if(obj.event === 'detail'){
      admin.popup({
        title: '给用户<font color="red">[' + data.loginName + '] </font>分配角色'
        ,area: ['600px', '600px']
        ,id: 'LAY-popup-user-add'
        ,success: function(layero, index){
          view(this.id).render('user/user/transfer', data).done(function(){
          console.log(data.id);
          var id;
            //监听提交
  //从后台获取数据
 $.ajax({
  url: "/roles/findRoles/" + data.id,
  type: "get",
  async: false,
  data: { data: id }, //转换json格式
  contentType: "application/json",
  dataType: 'json',
  success: function(res) {
      console.log(res);
      var valueArr = new Array();
      for (var i = 0; i < res.length; i++) { //循环获取数组内的Id值
          valueArr.push(res[i].id); //利用push循环添加id到数组valueArr
      }
      console.log(valueArr);
//渲染
$.ajax({
  url: "/roles/findAll",
  type: "get",
  async: false,
  data: { data: data.field }, //转换json格式
  contentType: "application/json",
  dataType: 'json',
      function(res) {
      console.log(res);
      transfer.render({
      elem: '#test1', //绑定元素
      title: ['系统所有角色', '当前用户拥有角色'], //设置左右框的标题
      data: res,
      value: valueArr,
      id: 'demo1' //定义索引
      ,
      parseData: function(res) { //这个只要用于转化格式，可以该变成符合条件的数据格式
      return {
                "value": res.id //数据值
              , "title": res.name //数据标题
              ,"disabled": res.disabled //是否禁用
              , "checked": res.checked //是否选中
      }

      },
      onchange: function(role, index) {
        console.log(role); //得到当前被穿梭的数据,这里为了防止冲突，将data换成role，
        console.log(index); //如果数据来自左边，index 为 0，否则为 1
  if (index == 0) {
      for (var i = 0; i < role.length; i++) {
        $.ajax({
          url: "/users/addRoles",
          type: "post",
          async: false,
          data: {
            users_id: data.id,
            roleslist: role[i].value
          } //转换json格式
        });
      }
  } else {
      for (var i = 0; i < role.length; i++) {
        $.ajax({
          url: "/users/delRoles",
          type: "post",
          async: false,
          data: {
              role_id: role[i].value
          } //转换json格式

        });
      }
  }
}
});
}
})
}
})
});
}
});
}
});

  //管理员管理
  table.render({
    elem: '#LAY-user-back-manage'
    ,url: '' //模拟接口
    ,method:'post'
    ,where:{
      token:'99edc960-8dba-43cf-8af8-81c408a2cb6b'
    }
    ,cols: [[
      {type: 'checkbox', fixed: 'left'}
      ,{field: 'id', title: 'id'}
      ,{field: 'title', title: '功能模块名称'}
      ,{field: 'checked', title: '复选框是否勾选'}
      ,{field: 'children', title: '子功能模块'}
      ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
    ]]
    ,text: '对不起，加载出现异常！'
  });
  
  //监听工具条
  table.on('tool(LAY-user-back-manage)', function(obj){
    var data = obj.data;
    if(obj.event === 'del'){
      layer.prompt({
        formType: 1
        ,title: '敏感操作，请验证口令'
      }, function(value, index){
        layer.close(index);
        layer.confirm('确定删除此管理员？', function(index){
          console.log(obj)
          obj.del();
          layer.close(index);
        });
      });
    }else if(obj.event === 'edit'){
      admin.popup({
    title: '编辑管理员'
    ,area: ['420px', '450px']
    ,id: 'LAY-popup-user-add'
    ,success: function(layero, index){
      view(this.id).render('user/administrators/adminform', data).done(function(){
        form.render(null, 'layuiadmin-form-admin');
        
        //监听提交
        form.on('submit(LAY-user-back-submit)', function(data){
          var field = data.field; //获取提交的字段

          //提交 Ajax 成功后，关闭当前弹层并重载表格
          //$.ajax({});
          layui.table.reload('LAY-user-back-manage'); //重载表格
          layer.close(index); //执行关闭 
        });
      });
    }
  });
    }
  });

  //角色管理
  table.render({
    elem: '#LAY-user-back-role'
    ,url: '/roles/findAll'//模拟接口
    ,method:'post'
    ,contentType:'application/json'
    ,cols: [[
      {type: 'checkbox', fixed: 'left'}
      ,{field: 'id', width: 80, title: '角色ID', sort: true}
      ,{field: 'name', title: '角色名称'}
      ,{title: '操作', width: 300, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
    ]]
    ,page: true
    ,limit: 10
    ,limits:[5,10,15,20]
    ,height: 'full-320'
    ,text: '对不起，加载出现异常！'
  });
  
  //监听工具条
  table.on('tool(LAY-user-back-role)', function(obj){
    var data = obj.data;
    if(obj.event === 'del'){
      layer.confirm('确定删除此角色？', function(index){
        $.ajax({
          type:"post",
          url:"/roles/"+data.id,
          dataType:"json",
          success:function (data) {    
          }
         }); 
        obj.del();
        layer.close(index);
      });  
    }else if(obj.event === 'edit'){
      admin.popup({
        title: '给角色<font color="red">['+ data.name +'] </font>编辑信息'
        ,area: ['500px', '480px']
        ,id: 'LAY-popup-user-add'
        ,success: function(layero, index){
          view(this.id).render('user/administrators/roleform', data).done(function(){
            form.render(null, 'layuiadmin-form-role');
            form.val('layuiadmin-form-role',data);
            //监听提交
            form.on('submit(LAY-user-role-submit)', function(data){
              var field = data.field; //获取提交的字段
          //提交 Ajax 成功后，关闭当前弹层并重载表格
          //$.ajax({});
          $.ajax({
            url:"/roles/addOrEdit",
             type:"post",
             async:false,
             data:JSON.stringify(field),//转成json格式
             contentType:"application/json",
             dataType:"json",
             success:function(data){
              admin.events.refresh();
        }
      });
        });
      });
    }
  });
    }else if(obj.event === 'access'){
      admin.popup({
        title: '给角色<font color="red">['+ data.name +'] </font>设置权限'
        ,area: ['500px', '480px']
        ,id: 'LAY-popup-user-add'
        ,success: function(layero, index){
          view(this.id).render('user/administrators/access', data).done(function(){
        //从后台获取数据
        var id;
        console.log(data.id);
    $.post(
    'http://stuapi.ysdjypt.com/api/GetModulesByRoleIdLayUI'
     , {       
       roleId: data.Id,
      token:'99edc960-8dba-43cf-8af8-81c408a2cb6b'
     },
      function(res) {
console.log(res);
//基本演示
tree.render({
    elem: '#access',
    data: res,
    edit: ['add', 'update', 'del'] //开启节点编辑图标
    ,showCheckbox: true //是否显示复选框
        ,
    id: 'demoId',
    isJump: true //是否允许点击节点时弹出新窗口跳转
        ,
    click: function(obj) {
        var data = obj.data; //获取当前点击的节点数据
        layer.msg('状态：' + obj.state + '<br>节点数据：' + JSON.stringify(data));

    },
    oncheck: function(obj) {
        console.log(obj.data.id); //得到当前点击的节点数据
        console.log(obj.checked); //得到当前节点的展开状态：open、close、normal
        console.log(obj.elem);
        console.log(obj.data.children); //当前节点下是否有子节点//得到当前节点元素
        var arr = [];
    }
    ,operate: function(obj){
      var type = obj.type; //得到操作类型：add、edit、del
      var data = obj.data; //得到当前节点的数据
      var elem = obj.elem; //得到当前节点元素
      
      //Ajax 操作
      var id = data.id; //得到节点索引
      if(type === 'add'){ //增加节点
        //返回 key 值
        return 123;
      } else if(type === 'update'){ //修改节点
        console.log(elem.find('.layui-tree-txt').html()); //得到修改后的内容
      } else if(type === 'del'){ //删除节点
      };
    }
});
//获取选中子节点
   var checkData = tree.getChecked('demoId');
    util.event('lay-demo', {

    getChecked: function(othis) {
        
        var treecheckdata = tree.getChecked('demoId');
        var nodeIds = new Array();
        nodeIds = getCheckedId(treecheckdata);
        // 测试
        var permList = nodeIds;
        console.log("permList:" + permList); //查看数据是否拼接

        // 获取选中节点的id
        function getCheckedId(jsonObj) {
            var id = "";
            $.each(jsonObj, function(index, item) {
                if (id != "") {
                    id = id + "," + item.id;
                } else {
                    id = item.id;
                }
                var i = getCheckedId(item.children);
                if (i != "") {
                    id = id + "," + i;
                }
            });
            return id;
        }

        $.post(
          'http://stuapi.ysdjypt.com/api/SetSysRights'
          , {
                parentIds: permList,
                rId: data.Id,
                token:'99edc960-8dba-43cf-8af8-81c408a2cb6b'
            },
            function(res) {
                layer.msg(res);
            }
        )

    },
    reload: function() {
        //重载实例
        tree.reload('demoId1', {

        });

    }

});

        }, "json" //这个一定要加，不然数据解析错误
    )
});
}
});
}

});
  exports('useradmin', {})
});